package com.fcscs.cservice.client;

import com.fcscs.core.common.authority.CServiceAuthority;
import com.fcscs.core.gwt.common.CoreConstants;
import com.fcscs.core.gwt.common.NavNodesRegistry;
import com.fcscs.cservice.client.common.CServiceConstants;
import com.fcscs.cservice.client.main.configuration.activitylog.ActivityLogPanel;
import com.fcscs.cservice.client.main.configuration.checkin.ExpressCheckInConfigPanel;
import com.fcscs.cservice.client.main.configuration.checkout.ExpressCheckOutConfigPanel;
import com.fcscs.cservice.client.main.configuration.iguest.DelicatedVideoPanel;
import com.fcscs.cservice.client.main.configuration.iguest.iGuestAuthenConfigPanel;
import com.fcscs.cservice.client.main.configuration.iguest.iGuestBellServicePanel;
import com.fcscs.cservice.client.main.configuration.iguest.iGuestHotelReservationPanel;
import com.fcscs.cservice.client.main.configuration.iguest.iGuestHouseKeepingPanel;
import com.fcscs.cservice.client.main.configuration.inroomdining.BillOptionPanel;
import com.fcscs.cservice.client.main.configuration.inroomdining.ChargeCategoryPanel;
import com.fcscs.cservice.client.main.configuration.inroomdining.ChargeTypePanel;
import com.fcscs.cservice.client.main.configuration.inroomdining.InRoomDiningAdminConfPanel;
import com.fcscs.cservice.client.main.configuration.inroomdining.TransactionTypePanel;
import com.fcscs.cservice.client.main.configuration.interfaceCon.InterfaceConfigPanel;
import com.fcscs.cservice.client.main.configuration.reservation.CountryAdminPanel;
import com.fcscs.cservice.client.main.configuration.reservation.GSAConfigPanel;
import com.fcscs.cservice.client.main.configuration.reservation.LanguageAdminPanel;
import com.fcscs.cservice.client.main.configuration.reservation.MembershipNoConfigPanel;
import com.fcscs.cservice.client.main.configuration.reservation.NationalityAdminPanel;
import com.fcscs.cservice.client.main.configuration.reservation.PayTypeAdminPanel;
import com.fcscs.cservice.client.main.configuration.reservation.PropertyConfigPanel;
import com.fcscs.cservice.client.main.configuration.reservation.RCConfigPanel;
import com.fcscs.cservice.client.main.configuration.reservation.StateAdminPanel;
import com.fcscs.cservice.client.main.configuration.reservation.TermAndConditionsConfigPanel;
import com.fcscs.cservice.client.main.configuration.reservation.TitleAdminPanel;
import com.fcscs.cservice.client.main.configuration.restaurant.RestaurantConfigPanel;
import com.fcscs.cservice.client.main.folio.FolioPanel;
import com.fcscs.cservice.client.main.iguestusers.iGuestUsersPanel;
import com.fcscs.cservice.client.main.inroomdining.InRoomDiningPanel;
import com.fcscs.cservice.client.main.reservation.ReservationPanel;
import com.fcscs.cservice.client.main.restaurants.RestaurantsPanel;
import com.fcscs.share.gwt.common.ShareGWTConstants;

public class CServiceNodes extends NavNodesRegistry {

	private static CServiceNodes INSTANCE = new CServiceNodes();

	private CServiceNodes() {
	}

	public static CServiceNodes getInstance() {
		return INSTANCE;
	}

	private NodeInfoContainer nic = null;

	@Override
	public NodeInfoContainer getNodes() {
		nic = new NodeInfoContainer();
		// Reservation Category
		nic.addNode(new NodeInfo(CServiceConstants.C_RESV, CServiceConstants.CSERVICE_CONSTANTS.reservation(),
				CServiceConstants.CSS_RESERVATION_ICON, CServiceAuthority.cSERVICE_RESV));

		// Reservation Panel
		NodeInfo ni = new NodeInfo(CServiceConstants.M_RESV, CServiceConstants.C_RESV,
				CServiceConstants.CSERVICE_CONSTANTS.reservation(), CoreConstants.CSS_FIND_SM_ICON,
				new ReservationPanel(CServiceConstants.M_RESV));
		ni.setDefaultModule(true);
		ni.setHideNav(true);
		nic.addNode(ni);
		
		
		// i-Guest Users Category
		nic.addNode(new NodeInfo(CServiceConstants.C_IGUESTUSERS, CServiceConstants.CSERVICE_CONSTANTS.i_GuestUsers(),

		CServiceConstants.CSS_BILL_ICON, CServiceAuthority.cSERVICE_RESV));

		// i-Guest Users Panel

		ni = new NodeInfo(CServiceConstants.M_IGUESTUSERS, CServiceConstants.C_IGUESTUSERS,

		CServiceConstants.CSERVICE_CONSTANTS.i_GuestUsers(), CoreConstants.CSS_FIND_SM_ICON,

		new iGuestUsersPanel(CServiceConstants.M_IGUESTUSERS));

		ni.setDefaultModule(true);

		ni.setHideNav(true);

		nic.addNode(ni);
		
		
		
		// Folio Category
		nic.addNode(new NodeInfo(CServiceConstants.C_FOLIO, CServiceConstants.CSERVICE_CONSTANTS.folio(),
				CServiceConstants.CSS_BILL_ICON, CServiceAuthority.cSERVICE_RESV));

		// Folio Panel
		ni = new NodeInfo(CServiceConstants.M_FOLIO, CServiceConstants.C_FOLIO,
				CServiceConstants.CSERVICE_CONSTANTS.folio(), CoreConstants.CSS_FIND_SM_ICON,
				new FolioPanel(CServiceConstants.M_FOLIO));
		ni.setDefaultModule(true);
		ni.setHideNav(true);
		nic.addNode(ni);
		
		// restaurants Category
		nic.addNode(new NodeInfo(CServiceConstants.C_RESTAURANTS, CServiceConstants.CSERVICE_CONSTANTS.restaurants(),
				CServiceConstants.CSS_BILL_ICON, CServiceAuthority.cSERVICE_RESV));

		// restaurants Panel
		ni = new NodeInfo(CServiceConstants.M_RESTAURANTS, CServiceConstants.C_RESTAURANTS,
				CServiceConstants.CSERVICE_CONSTANTS.restaurants(), CoreConstants.CSS_FIND_SM_ICON,
				new RestaurantsPanel(CServiceConstants.M_RESTAURANTS));
		ni.setDefaultModule(true);
		ni.setHideNav(true);
		nic.addNode(ni);
		
		// In-Room Dining Category
		nic.addNode(new NodeInfo(CServiceConstants.C_INROOMDINING, CServiceConstants.CSERVICE_CONSTANTS.in_RoomDining(),
				CServiceConstants.CSS_BILL_ICON, CServiceAuthority.cSERVICE_RESV));

		// In-Room Dining Panel
		ni = new NodeInfo(CServiceConstants.M_INROOMDINING, CServiceConstants.C_INROOMDINING,
				CServiceConstants.CSERVICE_CONSTANTS.in_RoomDining(), CoreConstants.CSS_FIND_SM_ICON,
				new InRoomDiningPanel(CServiceConstants.M_INROOMDINING));
		ni.setDefaultModule(true);
		ni.setHideNav(true);
		nic.addNode(ni);

		// Configuration Category
		nic.addNode(new NodeInfo(CServiceConstants.C_CONF, CServiceConstants.CSERVICE_CONSTANTS.configuration(),
				CServiceConstants.CSS_CONFIGURATION_SM_ICON, CServiceAuthority.cSERVICE_CONFIG));
// i-Guest inter category
ni = new NodeInfo(CServiceConstants.I_GUEST, CServiceConstants.C_CONF,
		CServiceConstants.CSERVICE_CONSTANTS.i_Guest(), CServiceConstants.CSS_RESERVATION_ICON, null, 
		CServiceAuthority.cSERVICE_CONFIG);
ni.setInterCat(true);
nic.addNode(ni);
//i-Guest Authentication Panel
		ni = new NodeInfo(CServiceConstants.M_CONF_IGUESTAUTHEN, CServiceConstants.I_GUEST,
				CServiceConstants.CSERVICE_CONSTANTS.iguestauthen(), 
				ShareGWTConstants.CSS_SUBMENU_ICON,
				new iGuestAuthenConfigPanel(CServiceConstants.M_CONF_IGUESTAUTHEN));
		nic.addNode(ni);
//Delicated Video Panel
		ni = new NodeInfo(CServiceConstants.M_CONF_DUPLICATEDVIDEO, CServiceConstants.I_GUEST,
				CServiceConstants.CSERVICE_CONSTANTS.delicatedvideo(), 
				ShareGWTConstants.CSS_SUBMENU_ICON,
				new DelicatedVideoPanel(CServiceConstants.M_CONF_DUPLICATEDVIDEO));
		nic.addNode(ni);	
		
	

////My Messages Panel
//		ni = new NodeInfo(CServiceConstants.M_CONF_DUPLICATEDVIDEO, CServiceConstants.I_GUEST,
//				CServiceConstants.CSERVICE_CONSTANTS.mymessages(), 
//				ShareGWTConstants.CSS_SUBMENU_ICON,
//				null);
//		nic.addNode(ni);
		
//Hotel Reservation Panel
ni = new NodeInfo(CServiceConstants.M_CONF_DUPLICATEDVIDEO, CServiceConstants.I_GUEST,
		CServiceConstants.CSERVICE_CONSTANTS.hotelreservation(), 
		ShareGWTConstants.CSS_SUBMENU_ICON,
		new iGuestHotelReservationPanel(CServiceConstants.M_CONF_HOTELRESERVATION));
nic.addNode(ni);

////Self Services Panel
//		ni = new NodeInfo(CServiceConstants.M_CONF_SELFSERVICES, CServiceConstants.I_GUEST,
//				CServiceConstants.CSERVICE_CONSTANTS.selfservices(), 
//				ShareGWTConstants.CSS_SUBMENU_ICON,
//				null);
//		nic.addNode(ni);
//Housekeeping
ni = new NodeInfo(CServiceConstants.M_CONF_HOUSEKEEPING, CServiceConstants.I_GUEST,
				CServiceConstants.CSERVICE_CONSTANTS.housekeeping(), 
				ShareGWTConstants.CSS_SUBMENU_ICON,
				new iGuestHouseKeepingPanel(CServiceConstants.M_CONF_HOUSEKEEPING));
		nic.addNode(ni);
//Bell service
		ni = new NodeInfo(CServiceConstants.M_CONF_BELLSERVICE, CServiceConstants.I_GUEST,
				CServiceConstants.CSERVICE_CONSTANTS.bellservice(), 
				ShareGWTConstants.CSS_SUBMENU_ICON,
				new iGuestBellServicePanel(CServiceConstants.M_CONF_BELLSERVICE));
		nic.addNode(ni);
		// Reservation inter category
		ni = new NodeInfo(CServiceConstants.RESERVATION, CServiceConstants.C_CONF,
				CServiceConstants.CSERVICE_CONSTANTS.reservation(), CServiceConstants.CSS_RESERVATION_ICON, null, 
				CServiceAuthority.cSERVICE_CONFIG);
		ni.setInterCat(true);
		nic.addNode(ni);
		
		// property config Panel
		ni = new NodeInfo(CServiceConstants.M_CONF_PROP, CServiceConstants.RESERVATION,
				CServiceConstants.CSERVICE_CONSTANTS.reservationConf(), 
				ShareGWTConstants.CSS_SUBMENU_ICON,
				new PropertyConfigPanel(CServiceConstants.M_CONF_PROP));
//		ni.setDefaultModule(true);
		nic.addNode(ni);
		
		ni = new NodeInfo(CServiceConstants.M_CONF_TANDC, CServiceConstants.RESERVATION,
				CServiceConstants.CSERVICE_CONSTANTS.termsAndConditions(), 
				ShareGWTConstants.CSS_SUBMENU_ICON,
				new TermAndConditionsConfigPanel(CServiceConstants.M_CONF_TANDC));
		nic.addNode(ni);
		
		ni = new NodeInfo(CServiceConstants.M_CONF_MEMSHIP_NO, CServiceConstants.RESERVATION,
				CServiceConstants.CSERVICE_CONSTANTS.membershipNo(), 
				ShareGWTConstants.CSS_SUBMENU_ICON,
				new MembershipNoConfigPanel(CServiceConstants.M_CONF_MEMSHIP_NO));
		nic.addNode(ni);
		
		ni = new NodeInfo(CServiceConstants.M_CONF_GSA, CServiceConstants.RESERVATION,
				CServiceConstants.CSERVICE_CONSTANTS.gsa(), 
				ShareGWTConstants.CSS_SUBMENU_ICON,
				new GSAConfigPanel(CServiceConstants.M_CONF_GSA));
		nic.addNode(ni);

		// RC config Panel
		ni = new NodeInfo(CServiceConstants.M_CONF_RESV_RC, CServiceConstants.RESERVATION,
				CServiceConstants.CSERVICE_CONSTANTS.registrationCard(), 
				ShareGWTConstants.CSS_SUBMENU_ICON,
				new RCConfigPanel(CServiceConstants.M_CONF_RESV_RC));
//		ni.setDefaultModule(true);
		nic.addNode(ni);
		
		ni = new NodeInfo(CServiceConstants.M_CONF_RESV_TITLE, CServiceConstants.RESERVATION,
				ShareGWTConstants.SHARE_GWT_CONSTANTS.title(), 
				ShareGWTConstants.CSS_SUBMENU_ICON,
				new TitleAdminPanel(CServiceConstants.M_CONF_RESV_TITLE));
		nic.addNode(ni);
		
		ni = new NodeInfo(CServiceConstants.M_CONF_RESV_PAYMENTTYPE, CServiceConstants.RESERVATION,
				ShareGWTConstants.SHARE_GWT_CONSTANTS.paymentType(), 
				ShareGWTConstants.CSS_SUBMENU_ICON,
				new PayTypeAdminPanel(CServiceConstants.M_CONF_RESV_PAYMENTTYPE));
		nic.addNode(ni);
		
		ni = new NodeInfo(CServiceConstants.M_CONF_RESV_LANGUAGE, CServiceConstants.RESERVATION,
				CServiceConstants.CSERVICE_CONSTANTS.guestLanguage(), 
				ShareGWTConstants.CSS_SUBMENU_ICON,
				new LanguageAdminPanel(CServiceConstants.M_CONF_RESV_LANGUAGE));
		nic.addNode(ni);
		
		ni = new NodeInfo(CServiceConstants.M_CONF_RESV_NATIONALITY, CServiceConstants.RESERVATION,
				ShareGWTConstants.SHARE_GWT_CONSTANTS.nationality(), 
				ShareGWTConstants.CSS_SUBMENU_ICON,
				new NationalityAdminPanel(CServiceConstants.M_CONF_RESV_NATIONALITY));
		nic.addNode(ni);
		
		ni = new NodeInfo(CServiceConstants.M_CONF_RESV_COUNTRY, CServiceConstants.RESERVATION,
				CoreConstants.CORE_CONSTANTS.country(), 
				ShareGWTConstants.CSS_SUBMENU_ICON,
				new CountryAdminPanel(CServiceConstants.M_CONF_RESV_COUNTRY));
		nic.addNode(ni);
		
		ni = new NodeInfo(CServiceConstants.M_CONF_RESV_STATE, CServiceConstants.RESERVATION,
				ShareGWTConstants.SHARE_GWT_CONSTANTS.state(), 
				ShareGWTConstants.CSS_SUBMENU_ICON,
				new StateAdminPanel(CServiceConstants.M_CONF_RESV_STATE));
		nic.addNode(ni);
		
		ni = new NodeInfo(CServiceConstants.EXPRESSCHECKIN, CServiceConstants.C_CONF, 
				CServiceConstants.CSERVICE_CONSTANTS.expressCheckin(), 
				CServiceConstants.CSS_RESERVATION_ICON, 
                new ExpressCheckInConfigPanel(CServiceConstants.EXPRESSCHECKIN), CServiceAuthority.cSERVICE_CONFIG);
		ni.setDefaultModule(true);
		nic.addNode(ni);
		
		nic.addNode(new NodeInfo(CServiceConstants.EXPRESSCHECKOUT, CServiceConstants.C_CONF, 
				CServiceConstants.CSERVICE_CONSTANTS.expressCheckOut(), 
				CServiceConstants.CSS_RESERVATION_ICON, 
                new ExpressCheckOutConfigPanel(CServiceConstants.EXPRESSCHECKOUT), CServiceAuthority.cSERVICE_CONFIG));
		
		ni = new NodeInfo(CServiceConstants.RESTAURANTCONFIG, CServiceConstants.C_CONF, 
				CServiceConstants.CSERVICE_CONSTANTS.restaurants(), 
				CServiceConstants.CSS_RESERVATION_ICON, 
                new RestaurantConfigPanel(CServiceConstants.RESTAURANTCONFIG), CServiceAuthority.cSERVICE_CONFIG);
		ni.setDefaultModule(true);
		nic.addNode(ni);
		
		// In-room dining
		ni = new NodeInfo(CServiceConstants.INROOMDINING, CServiceConstants.C_CONF,
				CServiceConstants.CSERVICE_CONSTANTS.in_RoomDining(), CServiceConstants.CSS_RESERVATION_ICON, null, 
				CServiceAuthority.cSERVICE_CONFIG);
		ni.setInterCat(true);
		nic.addNode(ni);
		
		//In-room dining configuration panel
		ni = new NodeInfo(CServiceConstants.INROOMDININGCONF, CServiceConstants.INROOMDINING, 
				CServiceConstants.CSERVICE_CONSTANTS.in_RoomDiningConf(), 
				ShareGWTConstants.CSS_SUBMENU_ICON, 
                new InRoomDiningAdminConfPanel(CServiceConstants.INROOMDININGCONF), CServiceAuthority.cSERVICE_CONFIG);
		ni.setDefaultModule(true);
		nic.addNode(ni);
		
		//Bill Option
		ni = new NodeInfo(CServiceConstants.M_CONF_INROOMDINING_BILLOPTION, CServiceConstants.INROOMDINING,
				CServiceConstants.CSERVICE_CONSTANTS.billOption(), 
				ShareGWTConstants.CSS_SUBMENU_ICON,
				new BillOptionPanel(CServiceConstants.M_CONF_INROOMDINING_BILLOPTION));
		nic.addNode(ni);
		
	     //	 Transaction panel
		ni = new NodeInfo(CServiceConstants.TRANSACTIONTYPE, CServiceConstants.INROOMDINING,
				CServiceConstants.CSERVICE_CONSTANTS.transactionType(), ShareGWTConstants.CSS_SUBMENU_ICON,
				new TransactionTypePanel(CServiceConstants.TRANSACTIONTYPE));
		ni.setShortcut('d');
		ni.setDefaultModule(true);
		nic.addNode(ni);
		
		//chargeType
		ni = new NodeInfo(CServiceConstants.M_CONF_INROOMDINING_CHARGEYPE, CServiceConstants.INROOMDINING,
				CServiceConstants.CSERVICE_CONSTANTS.chargeType(), 
				ShareGWTConstants.CSS_SUBMENU_ICON,
				new ChargeTypePanel(CServiceConstants.M_CONF_INROOMDINING_CHARGEYPE));
		nic.addNode(ni);
		
		// charge category panel
		ni = new NodeInfo(CServiceConstants.CHARGECATEGORY, CServiceConstants.INROOMDINING,
				CServiceConstants.CSERVICE_CONSTANTS.chargeCategory(), ShareGWTConstants.CSS_SUBMENU_ICON,
				new ChargeCategoryPanel(CServiceConstants.CHARGECATEGORY));
		nic.addNode(ni);

		//activity logs
		ni = new NodeInfo(CServiceConstants.ACTIVITYLOGS, CServiceConstants.C_CONF, 
				CServiceConstants.CSERVICE_CONSTANTS.activityLogs(), 
				CServiceConstants.CSS_RESERVATION_ICON, 
                new ActivityLogPanel(CServiceConstants.ACTIVITYLOGS), CServiceAuthority.cSERVICE_CONFIG);
		ni.setDefaultModule(true);
		nic.addNode(ni);
		
		nic.addNode(new NodeInfo(CServiceConstants.INTERFACE_CONF, CServiceConstants.C_CONF, 
				CServiceConstants.CSERVICE_CONSTANTS.interfaceConf(), 
				CServiceConstants.CSS_RESERVATION_ICON, 
                new InterfaceConfigPanel(CServiceConstants.INTERFACE_CONF), CServiceAuthority.cSERVICE_CONFIG));
		return nic;
	}

}
